// Hacked by Aeolian 2016 ... Incomplete/Unfinished/Test

desc:Yamaha S-YXG2006 Controller

slider1:0<0,15,1{Ch1,Ch2,Ch3,Ch4,Ch5,Ch6,Ch7,Ch8,Ch9,Ch10,Ch11,Ch12,Ch13,Ch14,Ch15,Ch16}>Channel
slider2:0<0,127,1{0 General MIDI,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}}>Bank
slider3:0<0,127,1{0 GrandPiano,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127}}>Program

slider4:127<0,127,1>Volume (CC7)
slider5:64<0,127,1>Pan (CC10)

slider6:0<0,127,1>Modulation Wheel (CC1)
slider7:0<0,127,127>Sustain/Hold (CC64)


slider8:0<0,127,127>Portamento (CC65)
slider9:0<0,127,1>Portamento Time (CC5)

slider10:0<0,127,1>Sound Attack (CC73)
slider11:0<0,127,1>Sound Release (CC72)

slider12:127<0,127,1>Brightness/Cutoff (CC74)
slider13:0<0,127,1>Timbre/Resonance (CC71)

slider14:0<0,127,1>Chorus Level (CC93)
slider15:0<0,127,1>Reverb Level (CC91)

slider16:1<0,17,1{NO EFFECT,CHORUS1,CHORUS2,CHORUS3,GM CHORUS1,GM CHORUS2,GM CHORUS3,GM CHORUS4,FB CHORUS,CHORUS4,CELESTE1,CELESTE2,CELESTE3,CELESTE4,FLANGER1,FLANGER2,GM FLANGER,FLANGER3}>Chorus Variation
slider17:1<0,17,1{NO EFFECT,HALL1,HALL2,HALL M,HALL L,ROOM1,ROOM2,ROOM3,ROOM S,ROOM M,ROOM L,STAGE1,STAGE2,PLATE,GM PLATE,WHITE ROOM,TUNNEL,BASEMENT}>Reverb Variation



in_pin:none
out_pin:none

////////////////////////////////////////////////////////////////////////////
@init
ext_noinit = 1.0;
statController     = 11*16;
statProgram  = $xC0;
updateCounter = 0;
t = 0;

on=1;
PAN = 10;
VOLUME = 7;
CC_FX1 = 93;
CC_FX2 = 91;
Cutoff = 74;
Resonance = 71;
Attack = 73;
Decay = 75;
Sustain = 31;
Release = 72;
PortamentoSwitch = 65;
PortamentoTime = 5;
Sustain = 64;
Modwheel = 1;



oldslider4 = -1;    // PAN
oldslider5 = -1;    // VOL
oldslider6 = -1;    // Cutoff
oldslider7 = -1;    // Resonance
oldslider8 = -1;    // Attack
oldslider9 = -1;    // Release
oldslider10 = -1;    // PortamentoSwitch
oldslider11 = -1;    // PortamentoTime
oldslider12 = -1;    // Sustain
oldslider13 = -1;    // Modwheel
oldslider14 = -1;    // FX1
oldslider15 = -1;    // FX2
////////////////////////////////////////////////////////////////////////////
@slider
channel != slider1 ?
  channel = slider1;

bank != slider2 || patch != slider3 ?
(
  bank = slider2;
  patch = slider3;
  send = 1;
);

slider4 = floor(slider4);
slider5 = floor(slider5);
slider6 = floor(slider6);
slider7 = floor(slider7);
slider8 = floor(slider8);
slider9 = floor(slider9);
slider10 = floor(slider10);
slider11 = floor(slider11);
slider12 = floor(slider12);
slider13 = floor(slider13);
slider14 = floor(slider14);
slider15 = floor(slider15);


fxvar1 = slider17;
  fxvar1 == 0 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x00\0x00\0xF7");
  );
  fxvar1 == 1 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x01\0x00\0xF7");
  );
  fxvar1 == 2 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x01\0x01\0xF7");
  );
  fxvar1 == 3 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x01\0x06\0xF7");
  );
  fxvar1 == 4 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x01\0x07\0xF7");
  );
  fxvar1 == 5 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x02\0x00\0xF7");
  );
  fxvar1 == 6 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x02\0x01\0xF7");
  );
  fxvar1 == 7 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x02\0x02\0xF7");
  );
  fxvar1 == 8 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x02\0x05\0xF7");
  );
  fxvar1 == 9 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x02\0x06\0xF7");
  );
  fxvar1 == 10 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x02\0x07\0xF7");
  );
  fxvar1 == 11 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x03\0x00\0xF7");
  );
  fxvar1 == 12 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x03\0x01\0xF7");
  );
  fxvar1 == 13 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x04\0x00\0xF7");
  );
  fxvar1 == 14 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x04\0x07\0xF7");
  );
  fxvar1 == 15 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x10\0x00\0xF7");
  );
  fxvar1 == 16 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x11\0x00\0xF7");
  );
  fxvar1 == 17 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x00\0x13\0x00\0xF7");
  );


fxvar2 = slider16;
  fxvar2 == 0 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x00\0x00\0xF7");
  );
  fxvar2 == 1 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x41\0x00\0xF7");
  );
  fxvar2 == 2 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x41\0x01\0xF7");
  );
  fxvar2 == 3 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x41\0x02\0xF7");
  );
  fxvar2 == 4 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x41\0x03\0xF7");
  );
  fxvar2 == 5 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x41\0x04\0xF7");
  );
  fxvar2 == 6 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x41\0x05\0xF7");
  );
  fxvar2 == 7 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x41\0x06\0xF7");
  );
  fxvar2 == 8 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x41\0x07\0xF7");
  );
  fxvar2 == 9 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x41\0x08\0xF7");
  );
  fxvar2 == 10 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x42\0x00\0xF7");
  );
  fxvar2 == 11 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x42\0x01\0xF7");
  );
  fxvar2 == 12 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x42\0x02\0xF7");
  );
  fxvar2 == 13 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x42\0x08\0xF7");
  );
  fxvar2 == 14 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x43\0x00\0xF7");
  );
  fxvar2 == 15 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x43\0x01\0xF7");
  );
  fxvar2 == 16 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x43\0x07\0xF7");
  );
  fxvar2 == 17 ? (
    midisend_str(0,"0xF0\0x43\0x10\0x4C\0x02\0x01\0x20\0x43\0x08\0xF7");
  );

////////////////////////////////////////////////////////////////////////////
@block
send == 1 ?
(
  midisend(0,statController+channel,0|bank*256);     //Bank Select
  midisend(0,statProgram+channel,patch);          //Program Change
  send = 0;
);

// FX 2
(slider15 != oldslider15) ?
(
  midisend(offset,statController+channel,CC_FX2|(slider15*256));
  oldslider15 = slider15;

);

// FX 1
(slider14 != oldslider14) ?
(
  midisend(offset,statController+channel,CC_FX1|(slider14*256));
  oldslider14 = slider14;
);

// PAN
(slider5 != oldslider5) ?
(
  midisend(offset,statController+channel,PAN|(slider5*256));
  oldslider5 = slider5;
);
// VOLUME
(slider4 != oldslider4) ?
(
  midisend(offset,statController+channel,VOLUME|(slider4*256));
  oldslider4 = slider4;
);

// Cutoff
(slider12 != oldslider12) ?
(
  midisend(offset,statController+channel,Cutoff|(slider12*256));
  oldslider12 = slider12;
);

// Resonance
(slider13 != oldslider13) ?
(
  midisend(offset,statController+channel,Resonance|(slider13*256));
  oldslider13 = slider13;
);

// Attack
(slider10 != oldslider10) ?
(
  midisend(offset,statController+channel,Attack|(slider10*256));
  oldslider10 = slider10;
);

// Release
(slider11 != oldslider11) ?
(
  midisend(offset,statController+channel,Release|(slider11*256));
  oldslider11 = slider11;
);

// PortamentoSwitch
(slider8 != oldslider8) ?
(
  midisend(offset,statController+channel,PortamentoSwitch|(slider8*256));
  oldslider8 = slider8;
);

// PortamentoTime
(slider9 != oldslider9) ?
(
  midisend(offset,statController+channel,PortamentoTime|(slider9*256));
  oldslider9 = slider9;
);

// Sustain
(slider7 != oldslider7) ?
(
  midisend(offset,statController+channel,Sustain|(slider7*256));
  oldslider7 = slider7;
);

// Modwheel
(slider6 != oldslider6) ?
(
  midisend(offset,statController+channel,Modwheel|(slider6*256));
  oldslider6 = slider6;
);
